Software applications and/or services are commonly offered to consumers in the form of grouped packages or suites, in which two or more such applications are provided. A suite is generally provided at a lower cost than if the individual applications included therein were purchased separately. In addition, a software suite typically includes an assortment of related and/or interoperable applications or services targeted to satisfy the software needs of a particular type of customer, such as small businesses or other types of organizations. Different application suites may thus be provided to satisfy various market needs, where certain segments of software consumers commonly require more than one application or service.
It is common to install the various applications of a suite onto one or more computers. However, if the applications are not installed in a proper sequence and with a proper dependency for the installed components, there is an increased likelihood of errors occurring during installation. When an error occurs, the user typically must exit the current installation, correct the error identified, and reinitiate the installation procedure. This dilemma is particularly pertinent for shared components.
For example, one or more applications of a suite may depend on one or more shared components or applications. A shared component typically is not operable unless utilized in conjunction with the application or applications that depend upon it. That is, the shared component usually serves no useful purpose by itself.
By way of illustration, an indexing service provides an efficient way to search through a large data store. The indexing service is configured specifically for each application with which it is installed to operate. As a result of such configuration, the indexing service is programmed to know how and/or what to search in the data store in conjunction with its associated application. In the absence of the associated dependent application to search, the indexing service provides substantially no useful purpose. Those skilled in the art will appreciate other instances in which shared components are employed.
In certain circumstances one or more versions of a shared component could be provided in a suite of applications. In the absence of a logical way to manage such data, more than one version of a shared component could be installed on a given machine. Moreover, the multiple versions of the same component may be stored in an unorganized manner, which could result in conflicts or other errors associated with the operation or use of such components.